Method, device and computer program product for managing storage system

ABSTRACT

Various techniques manage a storage system. Such techniques involve, in response to receiving an Input/Output (I/O) request for a first slice of a logic storage unit in a storage system, obtaining a first bitmap with respect to the logic storage unit, the logic storage unit being divided into a plurality of slices including the first slice, and one bit in the first bitmap indicating whether a cache function is enabled for a respective one of the plurality of slices. The techniques further involve determining, based on the first bitmap, whether the cache function is enabled for the first slice. Moreover, the techniques further involve, in response to determining that the cache function is enabled for the first slice, processing the I/O request at least with a cache in the storage system. Such techniques can control the use of cache in the storage system in a finer granularity.

FIELD

Embodiments of the present disclosure generally relate to the field ofdata storage, and more specifically, to method, device and computerprogram product for managing a storage system.

BACKGROUND

A storage resource pool composed of a large amount of storage disksusually exists in a storage system. Physical logic storage units can becreated on the storage resource pool. The physical logic storage unitsrefer to logic storage units that are directly mapped to a physicalstorage space and the number of the physical logic storage units isusually restricted by the size of the actual available physical storagespace. Besides, virtual logic storage units can be created based on thephysical logic storage units for use by an upper-layer application. Thevirtual logic storage units are not restricted by the size of thephysical storage space. A system administrator can create a large amountof virtual logic storage units, but space allocation is actuallyperformed only when data is to be written. Therefore, the virtual logicstorage units can easily implement different tiers to store various datato meet different user requirements.

A cache component usually also exists in the storage system and improvesperformance of data access by transparently storing the frequentlyaccessed data in a faster storage medium (e.g., flash) relative tounderlying storage disks. However, the cache is usually enabled anddisabled based on the entire storage resource pool. In other words, in aplurality of virtual logic storage units based on the same storageresource pool, the cache function cannot be enabled for some moreimportant virtual logic storage units and disabled for other lessimportant virtual logic storage units.

SUMMARY

Embodiments of the present disclosure provide method, device andcomputer program product for managing a storage system.

In a first aspect of the present disclosure, there is provided a methodfor managing a storage system. The method includes, in response toreceiving an Input/Output (I/O) request for a first slice of a logicstorage unit in a storage system, obtaining a first bitmap with respectto the logic storage unit, the logic storage unit being divided into aplurality of slices including the first slice, and one bit in the firstbitmap indicating whether a cache function is enabled for a respectiveone of the plurality of slices. The method also includes determining,based on the first bitmap, whether the cache function is enabled for thefirst slice. Moreover, the method further includes, in response todetermining that the cache function is enabled for the first slice,processing the I/O request at least with a cache in the storage system.

In a second aspect of the present disclosure, there is provided a devicefor managing a storage system. The device includes at least oneprocessing unit and at least one memory coupled to the at least oneprocessing unit and storing instructions for execution by the at leastone processing unit. The instructions, when executed by the at least oneprocessing unit, cause the device to perform actions including: inresponse to receiving an Input/Output (I/O) request for a first slice ofa logic storage unit in a storage system, obtaining a first bitmap withrespect to the logic storage unit, the logic storage unit being dividedinto a plurality of slices including the first slice, and one bit in thefirst bitmap indicating whether a cache function is enabled for arespective one of the plurality of slices; determining, based on thefirst bitmap, whether the cache function is enabled for the first slice;and in response to determining that the cache function is enabled forthe first slice, processing the I/O request at least with a cache in thestorage system.

In a third aspect of the present disclosure, there is provided acomputer program product. The computer program product is tangiblystored in a non-transient computer storage medium and includes machineexecutable instructions. The machine executable instructions, whenexecuted by a device, cause the device to perform any steps of themethod described according to the first aspect of the presentdisclosure.

The Summary is to introduce a selection of concepts in a simplified formthat are further described below in the Detailed Description. ThisSummary is not intended to identify key features or essential featuresof the present disclosure, nor is it intended to be used to limit thescope of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

Through the following more detailed description of the exampleembodiments of the present disclosure with reference to the accompanyingdrawings, the above and other objectives, features, and advantages ofthe present disclosure will become more apparent, wherein the samereference sign usually refers to the same component in the exampleembodiments of the present disclosure.

FIG. 1 illustrates a block diagram of an example storage system wheresome embodiments of the present disclosure can be implemented;

FIG. 2 illustrates a schematic diagram of different logic storage unitscreated in the storage system according to embodiments of the presentdisclosure;

FIG. 3 illustrates a flowchart of a method for managing a storage systemaccording to embodiments of the present disclosure;

FIG. 4 illustrates a flowchart of a method for processing an I/O requestwith a cache according to embodiments of the present disclosure;

FIG. 5 illustrates a flowchart of a method for writing data into a cachepage of a cache according to embodiments of the present disclosure;

FIG. 6 illustrates a flowchart of a background process operating at thecache according to embodiments of the present disclosure; and

FIG. 7 illustrates a schematic block diagram of an example device thatcan be used to implement embodiments of the present disclosure.

Throughout the drawings, the same or corresponding reference symbols areused to indicate the same or corresponding parts.

DETAILED DESCRIPTION OF EMBODIMENTS

The preferred embodiments of the present disclosure will be described inmore details with reference to the drawings. Although the drawingsillustrate the preferred embodiments of the present disclosure, itshould be appreciated that the present disclosure can be implemented invarious manners and should not be limited to the embodiments explainedherein. On the contrary, the embodiments are provided to make thepresent disclosure more thorough and complete and to fully convey thescope of the present disclosure to those skilled in the art.

As used herein, the term “includes” and its variants are to be read asopen-ended terms that mean “includes, but is not limited to.” The term“or” is to be read as “and/or” unless the context clearly indicatesotherwise. The term “based on” is to be read as “based at least in parton.” The terms “one example embodiment” and “one embodiment” are to beread as “at least one example embodiment.” The term “a furtherembodiment” is to be read as “at least a further embodiment.” The terms“first”, “second” and so on can refer to same or different objects. Thefollowing text also can include other explicit and implicit definitions.

As described above, a storage resource pool composed of a large amountof storage disks usually exists in a storage system. Different storageunits, such as physical logic storage unit and virtual logic storageunit and the like, can be created on the storage resource pool.

The physical logic storage unit refers to logic storage units that aredirectly mapped to physical storage spaces and the number of thephysical logic storage units usually is restricted by the size of theactual available physical storage space. The virtual logic storage unitscan be created based on the physical logic storage units for use by anupper-layer application. The virtual logic storage units are notrestricted by the size of the physical storage space. A systemadministrator can create a large amount of virtual logic storage units,but space allocation is actually performed only when data is to bewritten. Therefore, the virtual logic storage units can easily implementdifferent tiers to store various data to meet different userrequirements.

A cache in the storage system improves performance of data access bytransparently storing the frequently accessed data in a faster storagemedium (e.g., flash) relative to underlying storage disks. However, in atraditional solution, the cache is usually enabled and disabled based onthe entire storage resource pool. In other words, in a plurality ofvirtual logic storage units based on the same storage resource pool, thecache function cannot be enabled for some more important virtual logicstorage units and disabled for other less important virtual logicstorage units.

Moreover, in a case where the cache function is enabled, when somevirtual logic storage units are disabled, it have to take a relativelylong time for the data cached in the cache for the disabled virtualstorage units to be released (e.g., the data will not be released untilheat of corresponding cache pages drops below a predeterminedthreshold), since the cache cannot be informed of information about thedisabled virtual storage units.

Example embodiments of the present disclosure provide a solution formanaging a storage system to solve one or more of the above problems andother potential problems. This solution enables the user to control theuse of the cache based on applications that directly employ the virtuallogic storage units, so as to control the use of the cache in a finergranularity and in a more flexible way. When one physical logic storageunit is disabled in the storage resource pool, only a virtual logicstorage unit created based on the physical logic storage unit is markedas unavailable. Besides, when some virtual logic storage units aredisabled, data cached in the cache for the disabled virtual storageunits can be released more rapidly.

The individual features of the various embodiments, examples, andimplementations disclosed within this document can be combined in anydesired manner that makes technological sense. Furthermore, theindividual features are hereby combined in this manner to form allpossible combinations, permutations and variants except to the extentthat such combinations, permutations and/or variants have beenexplicitly excluded or are impractical. Support for such combinations,permutations and variants is considered to exist within this document.

FIG. 1 illustrates a block diagram of an example storage system 100where embodiments of the present disclosure can be implemented. As shownin FIG. 1, a storage system 100 includes a host 110, a Storage Processor(SP) 120 and a storage disk 130. It should be understood that structureand function of the storage system 100 are described only for thepurpose of examples, without suggesting any limitations to the scope ofthe present disclosure. As will be further described below, embodimentsof the present disclosure also can be applied to storage systems havingdifferent structures and/or functions.

In some embodiments, the host 110, for example, can be any physicalcomputer, virtual machine and server that operate user applications andthe like. The host 110 can transmit to the SP 120 an Input/Output (I/O)request, e.g., to read or write data etc. The storage resource pool 130can be composed of a large amount of storage disks, each of which can beany non-volatile storage medium currently known or to be developed inthe future, such as magnetic disk, Solid-State Disk (SSD) or disk arrayand the like. Different storage units, such as physical logic storageunits, virtual logic storage units and the like, can be created on thestorage resource pool 130. In the following text, “storage resourcepool” and “storage disks” can be used interchangeably.

The “physical logic storage units” here refer to logic storage unitsthat are directly mapped to a physical storage space and the number ofthe physical logic storage units usually is restricted by the size ofthe actual available physical storage space. The “virtual logic storageunits” here can be created based on the physical logic storage units foruse by an upper-layer application. The virtual logic storage units arenot restricted by the size of the physical storage space. A systemadministrator can create a large amount of virtual logic storage units,but space allocation is actually performed only when the data is to bewritten. Therefore, the virtual logic storage unit can easily implementdifferent tiers to store various data to meet different userrequirements.

It should be understood that the specialized circuitry that performs oneor more of the various operations disclosed herein may be formed by oneor more processors operating in accordance with specialized instructionspersistently stored in memory. Such components may be arranged in avariety of ways such as tightly coupled with each other (e.g., where thecomponents electronically communicate over a computer bus), distributedamong different locations (e.g., where the components electronicallycommunicate over a computer network), combinations thereof, and so on.

FIG. 2 illustrates a schematic diagram of different logic storage unitscreated in the example storage system 100 according to embodiments ofthe present disclosure. FIG. 2 illustrates a physical logic storage unit230 created based on the storage resource pool 130 and virtual logicstorage units 210 and 220 created based on the physical logic storageunit 230. As shown in FIG. 2, the physical logic storage unit 230 can bedivided into a plurality of slices 230-1, 230-2, . . . , 230-N(individually referred to as slice 230 or collectively referred to asslices 230 in the text). The virtual logic storage units 210 and 220 canbe created based on some of the slices 230. For example, the virtuallogic storage unit 210 can be allocated with slices 230-1, 230-3 and230-5 while the virtual logic storage unit 220 can be allocated withslices 230-2, 230-4 and 230-N.

Although FIG. 2 only illustrates one physical logic storage unit 230 andtwo virtual logic storage units 210 and 220, it should be understoodthat this is only for the purpose of illustration and is not intendedfor limiting the scope of the present disclosure. In some embodiments ofthe present disclosure, a plurality of physical logic storage units canbe created based on the storage resource pool 130. A large amount ofvirtual logic storage units can be created based on the createdplurality of physical logic storage units. Besides, the same logicstorage unit can be created based on different physical logic storageunits. When on physical logic storage unit is disabled in the storageresource pool 130, virtual logic storage units created based on thephysical logic storage unit can be disabled.

Furthermore, space allocation of a virtual logic storage unit can beperformed in different ways. In some embodiments, a virtual logicstorage unit can be allocated with a fixed number of slices, forexample. That is, the size of the virtual logic storage unit will notchange during use. In some further embodiments, a virtual logic storageunit can be created dynamically. In other words, the number of slicesallocated to the virtual logic storage unit can vary as the requirementchange. It should be understood that the virtual storage unit 210 or 220shown in FIG. 2 can be created in any of the above ways, and the scopeof the present disclosure is not limited in this regard.

The physical logic storage unit and the virtual logic storage unitusually have different address spaces. For example, an I/O requesttransmitted from the host 110 to the SP 120 shown in FIG. 1 may indicatea Logic Block Address (LBA) with respect to the virtual logic storageunit to be accessed. When processing the I/O request, the SP 120 needsto convert the address with respect to the virtual logic storage unitinto a logic block address with respect to a corresponding physicallogic storage unit, so as to implement access to a correspondingphysical storage space.

As shown in FIG. 1, the SP 120 may generally include a host side module121, an address mapping module 122 and a cache 123. It should beunderstood that the SP 120 also can include other components than theabove components in some embodiments, and the scope of the presentdisclosure is not limited in this regard.

The host side module 121 may receive from the host 110 the I/O requestand forward the I/O request to the address mapping module 122. The hostside module 121 also can return an I/O acknowledgement to the host 110according to a processing result of the I/O request. The address mappingmodule 122 can convert the LBA with respect to the virtual logic storageunit to be accessed indicated in the I/O request into an LBA withrespect to a corresponding physical logic storage unit, and transmit theI/O request to the cache 123 after the address conversion. The cache 123can temporarily store the frequently accessed data in a faster storagemedium (e.g., flash) relative to underlying storage disks, to improveperformance of data access. For example, if the I/O request is a readrequest, the cache 123 can directly return data to be read in case thatthe data to be read has already been cached in pages of the cache 123(i.e., “cache hit”). If the I/O request is a write request, the cache123 can directly write the data to be written into corresponding pagesif the data targeted by the write request in the storage unit hasalready been cached in the pages of the cache 123 (i.e., “cache hit”).The data will be flushed to corresponding storage disks later. If thedata targeted by the I/O request in the storage unit has not been cachedin the cache 123 yet (i.e., “cache miss”), the I/O request will beforwarded to corresponding storage disks for processing. If data in astorage unit is frequently accessed, the data can be written into acorresponding page of the cache 123 for subsequent access.

In some embodiments, the above cache function provided by the cache 123can be enabled or disabled based on the slices in the logic storageunit. For example, a bitmap with respect to a physical logic storageunit can be utilized to indicate whether the cache function is enabledfor each of physical logic storage unit or not. That is, each physicallogic storage unit can have a respective bitmap to indicate whether thecache function is enabled for each of slices in the physical logicstorage unit or not. In the text, such bitmap is also known as “firstbitmap.” In some embodiments, the first bitmap, for example, can bestored in a dedicated logic storage unit specialized for saving thesystem information created based on a part of physical storage resourcesin the storage resource pool 113.

When a bit in the first bitmap corresponding to a certain slice is setto enable the cache function, a cache strategy will be applied to datawithin the slice. That is, when the data within the slice is frequentlyaccessed, the data will be cached in the cache 123 to enhanceperformance of subsequent access. When a bit in the first bitmapcorresponding to a certain slice is set to disable the cache function,the I/O request for the slice will be directly forwarded to the storagedisks for processing. Besides, as will be further described below, abackground service can operate on the cache 123 to scan the cache pagesin the cache 123. If a cache page corresponding to the slice for whichthe cache function is disabled exists in the cache 123, the cache pagewill be immediately flushed into the storage disks and the metadataassociated with the page will be removed from the cache 123.

In some embodiments, the address mapping module 122 can maintain amapping between virtual logic storage units and a plurality of slicesprovided by the physical logic storage units. For example, the addressmapping module 122 can record the following information about a virtuallogic storage unit: an identifier of the virtual logic storage unit, astart LBA of the virtual logic storage unit, the number of logic blocksin the virtual logic storage unit, the number of slices included in thevirtual logic storage unit, identifiers of physical logic units whererespective slices included in the virtual logic storage unit arelocated, and a slice number of each of the slices included in thevirtual logic storage unit in the physical logic unit where the slice islocated etc.

In some embodiments, the address mapping module 122 can notify, inresponse to a request from an upper-layer application, the cache 123 ofwhich slices in the physical logic storage unit are enabled for cachingand for which slices the cache function is disabled. For example, theaddress mapping module 122 can transmit a command to the cache 123 whichcorresponds to the creation of the virtual logic storage unit, to enableor disable the cache function for the virtual logic storage unit.

In some embodiments, the address mapping module 122 can transmit to thecache 123 a command (also referred to as “first command” in the text) toenable the cache function for a slice. For example, the first commandmay include: an identifier of a virtual logic storage unit associatedwith the slice, an identifier of a physical logic storage unit where theslice is located, a slice label of the slice in the physical logicstorage unit, and an indication for enabling the cache function. Inresponse to receiving the first command from the address mapping module122, the cache 123 may set a bit in the first bitmap corresponding tothe slice, to enable the cache function for the slice.

In some embodiments, the address mapping module 122 can transmit to thecache 123 a command (also referred to as “second command” in the text)to disable the cache function for a slice. For example, the secondcommand may include: an identifier of a virtual logic storage unitassociated with the slice, an identifier of a physical logic storageunit where the slice is located, a slice label of the slice in thephysical logic storage unit, and an indication for disabling the cachefunction. In response to receiving the second command from the addressmapping module 122, the cache 123 may set a bit in the first bitmapcorresponding to the slice, to disable the cache function for the slice.

In some embodiments, the address mapping module 122 can transmit to thecache 123 a command to enable or disable the cache function for aplurality of continuous slices in the physical logic storage unit. Forexample, the command may include: an identifier of a virtual logicstorage unit associated with the plurality of continuous slices, anidentifier of a physical logic storage unit where the plurality ofcontinuous slices is located, a slice number of a start one of theplurality of slices in the physical logic storage unit, the number ofslices in the plurality of continuous slices, and an indication forenabling or disabling the cache function. In response to receiving thecommand from the address mapping module 122, the cache 123 may set a bitcorresponding to the slice in the bitmap, to enable or disable the cachefunction for the slice.

Additionally or alternatively, in some embodiments, in addition to thefirst bitmap, each physical logic storage unit may be associated with arespective bitmap indicating whether cache pages corresponding to theslices of the physical logic storage unit are valid or not. In the text,such bitmap is also referred to as “second bitmap.” Similar to the firstbitmap, for example, the second bitmap may be stored in a dedicatedlogic storage unit specialized for saving the system information createdbased on a part of physical storage resources in the storage resourcepool 113. For example, if one bit in the second bitmap is set to “1”, itmay indicate that data (i.e., one or more cache pages corresponding tothe slice) of the slice corresponding to the bit is invalid in the cache123. When an I/O request hits the cache page that is marked as invalidin the second bitmap, the I/O request will be directly forwarded to thephysical logic storage unit, so as to directly read data from thestorage disks or write data into the storage disks.

In some embodiments, when a virtual logic storage unit is disabled, theaddress mapping module 122 may transmit a command to the cache 123 toinvalidate cache pages associated with the virtual logic storage unit inthe cache 123. For example, the address mapping module 122 may transmitto the cache 123 a command (also referred to as “third command” in thetext) to invalidate one or more cache pages corresponding to one slice.For example, the third command may include: an identifier of a virtuallogic storage unit associated with the slice, an identifier of aphysical logic storage unit where the slice is located, a slice label ofthe slice in the physical logic storage unit, and an indication forinvalidating a cache page corresponding to the slice. In response toreceiving the third command from the address mapping module 122, thecache 123 may set a bit corresponding to the slice in the second bitmap,so as to invalidate the cache page corresponding to the slice. Forexample, when an I/O request hits the cache page corresponding to theslice that is invalidated, the I/O request will be directly forwarded tothe physical logic storage unit, to read data from the storage disks orwrite data into the storage disks directly. In this way, when somevirtual logic storage units are disabled, data cached in the cache forthe disabled virtual logic storage units can be released more rapidly.

Additionally or alternatively, in some embodiments, in addition to thefirst and second bitmaps, each physical logic storage unit may also beassociated with a respective bitmap indicating whether respective datacached in the cache 123 for the slices of the physical logic storageunit is dirty or clean. In this text, such bitmap is also referred to as“third bitmap.” Similar to the first bitmap, for example, the thirdbitmap may be stored in a dedicated logic storage unit specialized forsaving the system information created based on a part of physicalstorage resources in the storage resource pool 113. “Dirty data” hererefers to data that is cached in the cache 123 but has not been flushedinto the storage disks yet. “Clean data” here refers to data that iscached in the cache 123 and has already been flushed into the storagedisk.

In some embodiments, when data in a slice is written into one or morecache pages in the cache 123 corresponding to the slice for the firsttime, a bit in the third bitmap corresponding to the slice may need tobe set to indicate that data associated with the slice is dirty.Moreover, as will be further described below, a background service canoperate on the cache 123 to scan the cache pages in the cache 123. Whena page caching dirty data is scanned, the cache 123 can flush the datain the page to the storage disks. When all of the dirty datacorresponding to one slice is flushed to the storage disks, the cache123 can set the bit corresponding to the slice in the third bitmap, toindicate that the data associated with the slice is clean.

FIG. 3 illustrates a flowchart of a method 300 for managing a storagesystem according to embodiments of the present disclosure. For example,the method 300 can be performed by the SP 120 shown in FIG. 1.Specifically, the method 300 can be performed at the cache 123 in the SP120 for example. Various actions in the method 300 will be described indetails below with reference to FIG. 1. It should be understood that themethod 300 can also include additional actions not shown and/or omitsome shown actions, and the scope of the present disclosure is notlimited in this regard.

At block 310, the cache 123 obtains, in response to receiving an I/Orequest for a first slice of a logic storage unit (e.g., a physicallogic storage unit) in the storage system, a first bitmap with respectto the logic storage unit. Here, it is assumed that the I/O requestrequests to access the slice 230-2 (also known as “first slice” in thetext) in the physical logic storage unit 210 shown in FIG. 2. In someembodiments, the first bitmap, for example, can be stored in a dedicatedlogic storage unit specialized for saving the system information createdbased on a part of physical storage resources in the storage resourcepool 113. The cache 123 can obtain the first bitmap from the dedicatedlogic storage unit. In some embodiments, the first bitmap can include aplurality of bits respectively corresponding to a plurality of slices230 in the physical logic storage unit 210, each of which may indicatewhether the cache function is enabled for a respective one of theplurality of slices 230.

At block 320, the cache 123 determines, based on the first bitmap,whether the cache function is enabled for the slice 230-3. If the cache123 determines that the cache function is disabled for the slice 230-3,at block 330, the cache 123 forwards the I/O request to the physicallogic storage unit 210 to directly read data from the storage disks orwrite data into the storage disks. If the cache 123 determines that thecache function is enabled for the slice 230-3, at block 340, the cache123 applies the cache function to the slice 230-3 to process the I/Orequest for the slice 230-3.

FIG. 4 illustrates a flowchart of a method 400 for processing an I/Orequest with the cache according to embodiments of the presentdisclosure. For example, the method 400 can acts as an exampleimplementation of the block 340 in the method 300. The method 400, forexample, can be performed by the SP 120 shown in FIG. 1. Specifically,the method 400 can be performed at the cache 123 in the SP 120 forinstance. It should be understood that the method 400 also can includeadditional actions not shown and/or omit some shown actions, and thescope of the present disclosure is not limited in this regard.

At block 410, the cache 123 obtains a second bitmap with respect to thephysical logic storage unit 210. In some embodiments, the second bitmap,for example, can be stored in a dedicated logic storage unit specializedfor saving the system information created based on a part of physicalstorage resources in the storage resource pool 113. The cache 123 canobtain the second bitmap from the dedicated logic storage unit. In someembodiments, the second bitmap can include a plurality of bitsrespectively corresponding to a plurality of slices 230 in the physicallogic storage unit 210, each of which may indicate whether a cache pagein the cache 123 corresponding to a respective one of the plurality ofslices 230 is valid or not.

At block 420, the cache 123 determines, based on the second bitmap,whether a cache page in the cache 123 corresponding to the slice 230-3is valid or not.

If the cache 123 determines that the cache page corresponding to theslice 230-3 is invalid in the cache 123, at block 430, the cache 123forwards the I/O request to the physical logic storage unit 210 to readdata from the storage disks or write data into the storage disksdirectly.

If the cache 123 determines that the cache page corresponding to theslice 230-3 is valid in the cache 123, at block 440, the cache 123determines whether data of the slice targeted by the I/O request hasbeen cached in the cache page or not (i.e., “cache hit”). In case ofcache hit, the cache 123 can read data from the cache page correspondingto the slice 230-3 (also known as “first cache page” in the text) orwrite the data into the page.

If the cache is not hit, at block 460, the cache 123 forwards the I/Orequest to the physical logic storage unit 210 to read/write datafrom/to the storage disks. Besides, at block 470, the cache 123 mayincrement a reference count for a cache page corresponding to the slice230-3. In some embodiments, if there is no reference count for the cachepage corresponding to the slice 230-3 in the cache 123, the cache 123may allocate a free cache page reference count to the slice 230-3. Forexample, the reference count can indicate the frequency in which dataassociated with the slice 230-3 is accessed. If the reference count fora first cache page corresponding to the slice 230-3 already exists inthe cache 123, the cache 123 can increment the reference count for thefirst cache page.

At block 480, the cache 123 determines whether the reference count forthe first cache page exceeds a predetermined threshold. If the referencecount does not exceed the predetermined threshold, it demonstrates thatthe data associated with the slice 230-3 is not frequently accessed.Therefore, the data associated with the first cache page (e.g., data tobe read or written by the I/O request for the slice 230-3) may not becached in the first cache page. If the reference count exceeds thepredetermined threshold, it demonstrates that the data associated withthe slice 230-3 is frequently accessed. Therefore, the data associatedwith the first cache page (e.g., data to be read or written by the I/Orequest for the slice 230-3) can be written into the first cache pagefor subsequent access and use.

FIG. 5 illustrates a flowchart of a method 500 for writing data into acache page of a cache according to embodiments of the presentdisclosure. For example, the method 500 can act as an exampleimplementation of the block 490 in the method 400. It should beunderstood that the method 500 also can include additional actions notshown and/or omit some shown actions, and the scope of the presentdisclosure is not limited in this regard.

At block 510, the cache 123 obtains a third bitmap with respect to thephysical logic storage unit 210. In some embodiments, the third bitmap,for example, can be stored in a dedicated logic storage unit specializedfor saving the system information created based on a part of physicalstorage resources in the storage resource pool 113. The cache 123 canobtain the third bitmap from the dedicated logic storage unit. In someembodiments, the third bitmap can include a plurality of bitsrespectively corresponding to a plurality of slices 230 in the physicallogic storage unit 210, each of which may indicate whether data bufferedin the cache 123 for a respective one of the plurality of slices 230 isdirty or not.

At block 520, prior to writing the data associated with the slice 230-3into the cache 123, the cache 123 can set the third bitmap to indicatethat the data associated with the slice 230-3 is dirty.

Then, at block 530, the cache 123 writes the data associated with theslice 230-3 into a first cache page corresponding to the slice 230-3.

As described above, a background process can operate at the cache 123 toscan the cache pages in the cache 123. In response to discovering acache page corresponding to a slice for which the cache function isdisabled, the cache page will be immediately flushed into the storagedisks and the metadata associated with the page will be removed from thecache 123. When a page caching dirty data is scanned, the cache 123 canflush the data in the page to the storage disks. When all of the dirtydata corresponding to one slice is flushed to the storage disks, thecache 123 can set the bit corresponding to the slice in the thirdbitmap, to indicate that the data associated with the slice is clean.

FIG. 6 illustrates a flowchart of a process 600 operating at the cache123 according to embodiments of the present disclosure. In someembodiments, the process 600 can cyclically operate in the background ofthe cache 123. That is, for example, the cache 123 still can receive andrespond to one or more commands (e.g., for enabling or disabling thecache function for slices, or invalidating the cache page and the like)from the address mapping module 122 when the process 600 is allowed. Itshould be understood that the process 600 also can include additionalactions not shown and/or omit some shown actions, and the scope of thepresent disclosure is not limited in this regard.

At block 601, the cache 123 obtains a slice to be scanned. In someembodiments, the cache 123 can scan slices based on the physical logicunits in the storage system, e.g., by scanning each of the slices ineach of the physical logic units one by one. In other embodiments, thecache 123 can scan slices based on the virtual logic storage units inthe storage system, e.g., by scanning each of the slices in each of thevirtual logic units one by one. In some embodiments, in addition to thephysical logic units and the virtual logic units, there may be otherstorage objects created based on slices in the physical logic units inthe storage system. In this case, the cache 123 can scan slices based onthese storage objects.

At block 602, the cache 123 determines, based on the first bitmap of thephysical logic storage unit where the slice is located, whether thecache function is enabled for the slice. If the cache 123 determinesthat the cache function is disabled for the slice, the process 600proceeds to block 601, where a next slice to be processed is obtained.

If the cache 123 determines that the cache function is enabled for theslice, at block 603, the cache 123 determines, based on the secondbitmap of the physical logic storage unit, whether the cache pagecorresponding to the slice is valid or not. If the cache 123 determinesthat the cache page corresponding to the slice is invalid, the process600 proceeds to block 601, where a next slice to be processed isobtained.

If the cache 123 determines that the cache page corresponding to theslice is valid, at block 604, the cache 123 determines, based on thethird bitmap of the physical logic storage unit, whether the data cachedin the cache 123 for the slice is dirty or not. If the cache 123determines that the data cached for the slice is clean, the process 600proceeds to block 601, where a next slice to be processed is obtained.

If the cache 123 determines that the data associated with the slice isdirty, the cache 123 obtains a page to be processed from one or morepages corresponding to the slice at block 605.

At block 606, the cache 123 determines whether the page is marked asdirty. If the cache 123 determines that the page is dirty, the cache 123will flush the page into the storage disks at block 607, and mark thepage as clean at block 608. “Dirty page” here refers to a cache page inthe cache 123 which has not been flushed to the storage disks. “Cleanpage” here refers to a cache page in the cache 123 which has alreadybeen flushed into the storage disks.

If the cache 123 determines that the page is a clean page, the process600 proceeds to block 609, where the cache 123 determines whether thepage is a last page in the one or more pages corresponding to the slice.If not, the process 600 proceeds to block 605 to obtain a next page tobe processed.

If dirty pages associated with the slice are all flushed to the storagedisks, the process 600 proceeds to block 610, where the cache 123 setsthe third bitmap to mark the data associated with the slice as clean.Then, the procedure 600 proceeds to block 601 to obtain a next slice tobe processed.

From the above description, it can be seen that the solution formanaging a storage device according to example embodiments of thepresent disclosure enables the user to control the use of the cachebased on applications that directly employ the virtual logic storageunit, so as to control the use of the cache in a finer granularity andin a more flexible way. When one physical logic storage unit is disabledin the storage resource pool, only a virtual logic storage unit createdbased on the physical logic storage unit is marked as unavailable.Besides, when some virtual logic storage units are disabled, data cachedin the cache for the disabled virtual storage units can be released morerapidly.

FIG. 7 illustrates a schematic block diagram of an example device 700for implementing embodiments of the present disclosure. For example, theSP 120 shown in FIG. 1 can be implemented by the device 700. As shown,the device 700 includes a central process unit (CPU) 701, which canexecute various suitable actions and processing based on the computerprogram instructions stored in the read-only memory (ROM) 702 orcomputer program instructions loaded in the random-access memory (RAM)703 from a storage unit 708. The RAM 703 can also store all kinds ofprograms and data required by the operations of the device 700. CPU 701,ROM 702 and RAM 703 are connected to each other via a bus 704. Theinput/output (I/O) interface 705 is also connected to the bus 704.

A plurality of components in the device 700 is connected to the I/Ointerface 705, including: an input unit 706, such as keyboard, mouse andthe like; an output unit 707, e.g., various kinds of display andloudspeakers etc.; a storage unit 708, such as disk, optical disk etc.;and a communication unit 709, such as network card, modem, wirelesstransceiver and the like. The communication unit 709 allows the device700 to exchange information/data with other devices via the computernetwork, such as Internet, and/or various telecommunication networks.

The above described each procedure and processing, such as method 300,400, 500 and/or 600, can be executed by the processing unit 701. Forexample, in some embodiments, the method 300, 400, 500 and/or 600 can beimplemented as computer software programs tangibly included in themachine-readable medium, e.g., storage unit 708. In some embodiments,the computer program can be partially or fully loaded and/or mounted tothe device 700 via ROM 702 and/or communication unit 709. When thecomputer program is loaded to RAM 703 and executed by the CPU 701, oneor more actions in the above described method 300, 400, 500 and/or 600can be implemented.

The present disclosure can be method, apparatus, system and/or computerprogram product. The computer program product can include acomputer-readable storage medium, on which the computer-readable programinstructions for executing various aspects of the present disclosure areloaded.

The computer-readable storage medium can be a tangible apparatus thatmaintains and stores instructions utilized by the instruction executingapparatuses. The computer-readable storage medium can be, but notlimited to, such as electrical storage device, magnetic storage device,optical storage device, electromagnetic storage device, semiconductorstorage device or any appropriate combinations of the above. Moreconcrete examples of the computer-readable storage medium(non-exhaustive list) include: portable computer disk, hard disk,random-access memory (RAM), read-only memory (ROM), erasableprogrammable read-only memory (EPROM or flash), static random-accessmemory (SRAM), portable compact disk read-only memory (CD-ROM), digitalversatile disk (DVD), memory stick, floppy disk, mechanical codingdevices, punched card stored with instructions thereon, or a projectionin a slot, and any appropriate combinations of the above. Thecomputer-readable storage medium utilized here is not interpreted astransient signals per se, such as radio waves or freely propagatedelectromagnetic waves, electromagnetic waves propagated via waveguide orother transmission media (such as optical pulses via fiber-opticcables), or electric signals propagated via electric wires.

The described computer-readable program instruction herein can bedownloaded from the computer-readable storage medium to eachcomputing/processing device, or to an external computer or externalstorage via Internet, local area network, wide area network and/orwireless network. The network can include copper-transmitted cable,optical fiber transmission, wireless transmission, router, firewall,switch, network gate computer and/or edge server. The network adaptercard or network interface in each computing/processing device receivescomputer-readable program instructions from the network and forwards thecomputer-readable program instructions for storage in thecomputer-readable storage medium of each computing/processing device.

The computer program instructions for executing operations of thepresent disclosure can be assembly instructions, instructions ofinstruction set architecture (ISA), machine instructions,machine-related instructions, micro codes, firmware instructions, statesetting data, or source codes or target codes written in anycombinations of one or more programming languages, wherein theprogramming languages consist of object-oriented programming languages,such as Smalltalk, C++ and the like, and traditional proceduralprogramming languages, e.g., C language or similar programminglanguages. The computer-readable program instructions can be implementedfully on the user computer, partially on the user computer, as anindependent software package, partially on the user computer andpartially on the remote computer, or completely on the remote computeror server. In the case where remote computer is involved, the remotecomputer can be connected to the user computer via any type of networks,including local area network (LAN) and wide area network (WAN), or tothe external computer (e.g., connected via Internet using the Internetservice provider). In some embodiments, state information of thecomputer-readable program instructions is used to customize anelectronic circuit, e.g., programmable logic circuit, field programmablegate array (FPGA) or programmable logic array (PLA). The electroniccircuit can execute computer-readable program instructions to implementvarious aspects of the present disclosure.

Each aspect of the present disclosure is disclosed here with referenceto the flow chart and/or block diagram of method, apparatus (system) andcomputer program product according to embodiments of the presentdisclosure. It should be understood that each block of the flow chartand/or block diagram and combinations of each block in the flow chartand/or block diagram can be implemented by the computer-readable programinstructions.

The computer-readable program instructions can be provided to theprocessing unit of general-purpose computer, dedicated computer or otherprogrammable data processing apparatuses to manufacture a machine, suchthat the instructions that, when executed by the processing unit of thecomputer or other programmable data processing apparatuses, generate anapparatus for implementing functions/actions stipulated in one or moreblocks in the flow chart and/or block diagram. The computer-readableprogram instructions can also be stored in the computer-readable storagemedium and cause the computer, programmable data processing apparatusand/or other devices to work in a particular manner, such that thecomputer-readable medium stored with instructions contains an article ofmanufacture, including instructions for implementing various aspects ofthe functions/actions stipulated in one or more blocks of the flow chartand/or block diagram.

The computer-readable program instructions can also be loaded intocomputer, other programmable data processing apparatuses or otherdevices, so as to execute a series of operation steps on the computer,other programmable data processing apparatuses or other devices togenerate a computer-implemented procedure. Therefore, the instructionsexecuted on the computer, other programmable data processing apparatusesor other devices implement functions/actions stipulated in one or moreblocks of the flow chart and/or block diagram.

The flow chart and block diagram in the drawings illustrate systemarchitecture, functions and operations that may be implemented bydevice, method and computer program product according to multipleimplementations of the present disclosure. In this regard, each block inthe flow chart or block diagram can represent a module, a part ofprogram segment or code, wherein the module and the part of programsegment or code include one or more executable instructions forperforming stipulated logic functions. In some alternativeimplementations, it should be noted that the functions indicated in theblock can also take place in an order different from the one indicatedin the drawings. For example, two successive blocks can be in factexecuted in parallel or sometimes in a reverse order dependent on theinvolved functions. It should also be noted that each block in the blockdiagram and/or flow chart and combinations of the blocks in the blockdiagram and/or flow chart can be implemented by a hardware-based systemexclusive for executing stipulated functions or actions, or by acombination of dedicated hardware and computer instructions.

Various embodiments of the present disclosure have been described aboveand the above description is only provided by example rather thanexhaustive and is not limited to the embodiments of the presentdisclosure. Many modifications and alterations, without deviating fromthe scope and spirit of the explained various embodiments, are obviousfor those skilled in the art. The selection of terms in the text aims tobest explain principles and actual applications of each embodiment andtechnical improvements made in the market by each embodiment, or enableother ordinary skilled in the art to understand embodiments of thepresent disclosure.

We claim:
 1. A method for managing a storage system, comprising: inresponse to receiving an Input/Output (I/O) request for a first slice ofa logic storage unit in a storage system, obtaining a first bitmap withrespect to the logic storage unit, the logic storage unit being dividedinto a plurality of slices including the first slice, and one bit in thefirst bitmap indicating whether a cache function is enabled for arespective one of the plurality of slices; determining, based on thefirst bitmap, whether the cache function is enabled for the first slice;and in response to determining that the cache function is enabled forthe first slice, processing the I/O request at least with a cache in thestorage system; wherein the cache comprises a plurality of cache pages,and wherein processing the I/O request at least with the cachecomprises: obtaining a second bitmap with respect to the logic storageunit, one bit in the second bitmap indicating whether one of theplurality of cache pages corresponding to a respective one of theplurality of slices is valid or not; determining, based on the secondbitmap, whether a first cache page in the plurality of cache pagescorresponding to the first slice is valid or not; and in response todetermining that the first cache page is invalid, forwarding the I/Orequest to the logic storage unit for processing.
 2. The method of claim1, further comprising: in response to determining that the cachefunction is disabled for a different slice, forwarding an I/O requestfor the different slice to the logic storage unit for processing.
 3. Themethod of claim 1, wherein processing the I/O request at least with thecache comprises: in response to determining that the first cache page isvalid, increasing a reference count for the first cache page; and inresponse to the reference count exceeding a predetermined threshold,caching a first data associated with the I/O request in the first cachepage.
 4. The method of claim 3, wherein caching the first data in thefirst cache page comprises: obtaining a third bitmap with respect to thelogic storage unit, one bit in the third bitmap indicating whether datacached in the cache for a respective one of the plurality of slices isdirty or not; setting the third bitmap to indicate that data associatedwith the first slice is dirty; and caching the first data in the firstcache page.
 5. The method of claim 4, further comprising: determining,based on the third bitmap, whether a second data cached in the cache fora second slice in the plurality of slices is dirty data; in response todetermining that the second data is dirty, flushing the second data intothe second slice; and setting the third bitmap to indicate that dataassociated with the second slice is clean.
 6. The method of claim 1,further comprising: in response to receiving a first command to enablethe cache function for a third slice in the plurality of slices, settinga first bit in the first bitmap corresponding to the third slice toenable the cache function for the third slice.
 7. The method of claim 1,further comprising: in response to receiving a second command to disablethe cache function for a fourth slice in the plurality of slices,setting a second bit in the first bitmap corresponding to the fourthslice to disable the cache function for the fourth slice.
 8. The methodof claim 1, further comprising: in response to receiving a third commandto invalidate a second cache page corresponding to a fifth slice in theplurality of slices, setting a third bit in the second bitmapcorresponding to the fifth slice to invalidate the second cache page. 9.The method of claim 1, further comprising: in response to the I/Orequest, storing data in the first cache page in the plurality of cachepages corresponding to the first slice, after the data is stored in thefirst cache page, determining that the cache function for the firstslice has become disabled, and in response to determining that cachefunction for the first slice has become disabled, releasing the data infirst cache page.
 10. A device for managing a storage system,comprising: at least one processing unit; at least one memory coupled tothe at least one processing unit and storing instructions for executionby the at least one processing unit, the instructions, when executed bythe at least one processing unit, causing the device to perform actionscomprising: in response to receiving an Input/Output (I/O) request for afirst slice of a logic storage unit in a storage system, obtaining afirst bitmap with respect to the logic storage unit, the logic storageunit being divided into a plurality of slices including the first slice,and one bit in the first bitmap indicating whether a cache function isenabled for a respective one of the plurality of slices; determining,based on the first bitmap, whether the cache function is enabled for thefirst slice; and in response to determining that the cache function isenabled for the first slice, processing the I/O request at least with acache in the storage system; wherein the cache comprises a plurality ofcache pages, and wherein processing the I/O request at least with thecache comprises: obtaining a second bitmap with respect to the logicstorage unit, one bit in the second bitmap indicating whether one of theplurality of cache pages corresponding to a respective one of theplurality of slices is valid or not; determining, based on the secondbitmap, whether a first cache page in the plurality of cache pagescorresponding to the first slice is valid or not; and in response todetermining that the first cache page is invalid, forwarding the I/Orequest to the logic storage unit for processing.
 11. The device ofclaim 10, wherein the actions further comprise: in response todetermining that the cache function is disabled for a different slice,forwarding an I/O request for the different slice to the logic storageunit for processing.
 12. The device of claim 10, wherein processing theI/O request at least with the cache comprises: in response todetermining that the first cache page is valid, increasing a referencecount for the first cache page; and in response to the reference countexceeding a predetermined threshold, caching a first data associatedwith the I/O request in the first cache page.
 13. The device of claim12, wherein caching the first data in the first cache page comprises:obtaining a third bitmap with respect to the logic storage unit, one bitin the third bitmap indicating whether data cached in the cache for arespective one of the plurality of slices is dirty or not; setting thethird bitmap to indicate that data associated with the first slice isdirty; and caching the first data in the first cache page.
 14. Thedevice of claim 13, wherein the actions further comprise: determining,based on the third bitmap, whether a second data cached in the cache fora second slice in the plurality of slices is dirty data; in response todetermining that the second data is dirty, flushing the second data intothe second slice; and setting the third bitmap to indicate that dataassociated with the second slice is clean.
 15. The device of claim 10,wherein the actions further comprise: in response to receiving a firstcommand to enable the cache function for a third slice in the pluralityof slices, setting a first bit in the first bitmap corresponding to thethird slice to enable the cache function for the third slice.
 16. Thedevice of claim 10, wherein the actions further comprise: in response toreceiving a second command to disable the cache function for a fourthslice in the plurality of slices, setting a second bit in the firstbitmap corresponding to the fourth slice to disable the cache functionfor the fourth slice.
 17. The device of claim 10, wherein the actionsfurther comprise: in response to receiving a third command to invalidatea second cache page corresponding to a fifth slice in the plurality ofslices, setting a third bit in the second bitmap corresponding to thefifth slice to invalidate the second cache page.
 18. The device of claim10, wherein the actions further comprise: in response to the I/Orequest, storing data in the first cache page in the plurality of cachepages corresponding to the first slice, after the data is stored in thefirst cache page, determining that the cache function for the firstslice has become disabled, and in response to determining that cachefunction for the first slice has become disabled, releasing the data infirst cache page.
 19. A computer program product having a non-transitorycomputer readable medium which stores a set of instructions to manage astorage system; the set of instructions, when carried out by a device,causing the device to perform a method of: in response to receiving anInput/Output (I/O) request for a first slice of a logic storage unit inthe storage system, obtaining a first bitmap with respect to the logicstorage unit, the logic storage unit being divided into a plurality ofslices including the first slice, and one bit in the first bitmapindicating whether a cache function is enabled for a respective one ofthe plurality of slices; determining, based on the first bitmap, whetherthe cache function is enabled for the first slice; and in response todetermining that the cache function is enabled for the first slice,processing the I/O request at least with a cache in the storage system;wherein the cache comprises a plurality of cache pages, and whereinprocessing the I/O request at least with the cache comprises: obtaininga second bitmap with respect to the logic storage unit, one bit in thesecond bitmap indicating whether one of the plurality of cache pagescorresponding to a respective one of the plurality of slices is valid ornot; determining, based on the second bitmap, whether a first cache pagein the plurality of cache pages corresponding to the first slice isvalid or not; and in response to determining that the first cache pageis invalid, forwarding the I/O request to the logic storage unit forprocessing.
 20. The computer program product of claim 19, wherein themethod further includes: in response to the I/O request, storing data inthe first cache page in the plurality of cache pages corresponding tothe first slice, after the data is stored in the first cache page,determining that the cache function for the first slice has becomedisabled, and in response to determining that cache function for thefirst slice has become disabled, releasing the data in first cache page.